package com.ruanyuan.intercepter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.sun.xml.internal.bind.v2.runtime.unmarshaller.Intercepter;

/**
 * 用户评论拦截器
 * 
 * @author zbp
 *
 */
public class CommentIntercepter implements HandlerInterceptor {

	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		// TODO Auto-generated method stub

	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		// TODO Auto-generated method stub

	}

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
		// TODO Auto-generated method stub
		// 获取session对象
		HttpSession session = request.getSession();
		if (request.getRequestURI().indexOf("User/tologin") > 0) {
			return true;
		}
		if (request.getRequestURI().indexOf("Message/addNewMess") > 0) {
			if (session.getAttribute("user") != null) {
				return true;
			} else {
				// response.sendRedirect(request.getContextPath() + "/User/tologin");
				// 获取当前请求的路径：协议://服务器名:端口号/项目名
				String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
						+ request.getContextPath();
				// 如果request.getHeader("X-Requested-With") 返回的是"XMLHttpRequest"说明就是ajax请求，需要特殊处理
				// 否则直接重定向就可以了
				if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
					// 自定义响应头 告诉ajax我是重定向，用ajax进行判断。
					response.setHeader("REDIRECT", "REDIRECT");
					// 自定义响应头 告诉ajax我重定向的路径
					response.setHeader("CONTEXTPATH", basePath + "/User/tologin");
					// response.setHeader("Content-Type", "application/json;charset=UTF-8"); 这句没必要
					// 设置这次请求状态码为403 禁止访问
					response.setStatus(HttpServletResponse.SC_FORBIDDEN);
				} else {
					// 如果不是ajax 就正常重定向
					response.sendRedirect(basePath + "/User/tologin");
					return false;
				}

			}
		}
		if (request.getRequestURI().indexOf("Reply/addReply") > 0) {
			if (session.getAttribute("user") != null) {
				return true;
			} else {
				// response.sendRedirect(request.getContextPath() + "/User/tologin");
				// 获取当前请求的路径：协议://服务器名:端口号/项目名
				String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
						+ request.getContextPath();
				// 如果request.getHeader("X-Requested-With") 返回的是"XMLHttpRequest"说明就是ajax请求，需要特殊处理
				// 否则直接重定向就可以了
				if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
					// 自定义响应头 告诉ajax我是重定向，用ajax进行判断。
					response.setHeader("REDIRECT", "REDIRECT");
					// 自定义响应头 告诉ajax我重定向的路径
					response.setHeader("CONTEXTPATH", basePath + "/User/tologin");
					// response.setHeader("Content-Type", "application/json;charset=UTF-8"); 这句没必要
					// 设置这次请求状态码为403 禁止访问
					response.setStatus(HttpServletResponse.SC_FORBIDDEN);

				} else {
					// 如果不是ajax 就正常重定向
					response.sendRedirect(basePath + "/User/tologin");
				}
				return false;
			}
		} else {
			return true;
		}
	}

}
